/*
 * @Author: lilin_:）
 * @version: 1.0
 * @Descripttion: 
 * @Date: 2021-07-03 10:55:46
 * @LastEditors: sueRimn
 * @LastEditTime: 2021-09-10 14:58:19
 */
import axios from 'axios';
import { ElMessage, ElMessageBox } from 'element-plus';
import { Session } from '/@/utils/storage';
// 引入全局遮盖
import { ElLoading } from 'element-plus';
import { checkPrimeSync } from 'crypto';
import { useRoute, useRouter } from 'vue-router';


axios.defaults.withCredentials = true  //开启发送cookie
// 配置新建一个 axios 实例
const service = axios.create({
	withCredentials: true,
	baseURL: import.meta.env.VITE_API_URL as any,
	// baseURL:'http://192.168.1.73:8095',
	timeout: 50000,
	headers: { 'Content-Type': 'application/json' },
});

let loading: any;
// 添加请求拦截器
service.interceptors.request.use(
	(config) => {
		// 创建一个全局遮盖
		loading = ElLoading.service({
			lock: true,
			text: '请稍等，数据加载中...',
			// spinner: 'el-icon-loading',
			background: 'rgba(0, 0, 0, 0)',
		});

		// console.log(`${import.meta.env.VITE_API_URL}/console/manager/login`, '1111111111122222222222222')

		// 在发送请求之前做些什么 token
		if (Session.get('token')) {
			// alert(Session.get('token'))
			// console.log(Session.get('token'),'11111s')
			config.headers.common['Authorization'] = `bearer${Session.get('token')}`;
		}
		return config;
	},
	(error) => {
		// 对请求错误做些什么
		return Promise.reject(error);
	}
);


let coderArry = []

// 添加响应拦截器
service.interceptors.response.use(
	(response: any) => {
		// 对响应数据做点什么
		const res = response.data;
		if (res.code && res.code !== 200) {

			// console.log(res.code, 'code111111111111111')
			// `token` 过期或者账号已在别处登录
			if (res.code === 401) {
				coderArry.push(res.code)
				// console.log(coderArry, 'coderArry')
				if (coderArry.length == 1) {
					Session.clear(); // 清除浏览器全部临时缓存
					// const router = useRouter();
					ElMessageBox.alert('你已被登出，请重新登录', '提示', {})
						.then(() => {
							window.location.href = '/'; // 去登录页
						})
						.catch(() => {
							window.location.href = '/'; // 去登录页
						});
				}

			} else {
				ElMessage.error(res.msg);
			}
			// ElMessage.error(res.msg);
			loading.close()
			return Promise.reject(service.interceptors.response);
		} else {
			// 当状态成功的时候
			// console.log(response, '我是接口成功的时候')
			loading.close()
			// ElMessage.success(res.msg);
			return response.data;
		}
	},
	(error) => {
		console.log(error, '1111111111')
		// 对响应错误做点什么
		if (error.message.indexOf('timeout') != -1) {
			ElMessage.error('网络超时');
		} else if (error.message == 'Network Error') {
			ElMessage.error('网络连接错误');
		} else {
			if (error.response.data) ElMessage.error('接口请求失败');
			else ElMessage.error('接口路径找不到');
		}
		loading.close()
		return Promise.reject(error);
	}
);

service.defaults.withCredentials = true

// 导出 axios 实例
export default service;
